﻿using BE.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;

namespace BL_Server
{
    [ServiceContract]
    public interface IBL
    {
        // Cities
        [OperationContract]
        List<City> GetAllCities();
        [OperationContract]
        bool AddCity(City city);
        [OperationContract]
        bool RemoveCity(int id);
        [OperationContract]
        bool UpdateCity(City city);

        // Professions
        [OperationContract]
        List<Profession> GetAllProfessions();
        [OperationContract]
        bool AddProfession(Profession profession);
        [OperationContract]
        bool RemoveProfession(int id);
        [OperationContract]
        bool UpdateProfession(Profession profession);

        // Programs
        [OperationContract]
        List<Program> GetAllPrograms();
        [OperationContract]
        bool AddProgram(Program program);
        [OperationContract]
        bool RemoveProgram(int id);
        [OperationContract]
        bool UpdateProgram(Program program);

        // Dorms
        [OperationContract]
        List<Dorm> GetAllDorms();
        [OperationContract]
        bool AddDorm(Dorm dorm);
        [OperationContract]
        bool RemoveDorm(int id);
        [OperationContract]
        bool UpdateDorm(Dorm dorm);

        // Rooms
        [OperationContract]
        List<Room> GetAllRooms();
        [OperationContract]
        bool AddRoom(Room room);
        [OperationContract]
        bool RemoveRoom(int id);
        [OperationContract]
        bool UpdateRoom(Room room);

        // Charges
        [OperationContract]
        IEnumerable<Charge> GetAllCharges();
        [OperationContract]
        bool AddCharge(Charge charge);
        [OperationContract]
        bool RemoveCharge(int id);
        [OperationContract]
        bool UpdateCharge(Charge charge);

        // Students
        [OperationContract]
        IEnumerable<Student> GetAllStudents();
        [OperationContract]
        bool AddStudent(Student student);
        [OperationContract]
        bool RemoveStudent(int id);
        [OperationContract]
        bool UpdateStudent(Student student);

        // Users
        [OperationContract]
        IEnumerable<User> GetAllUsers();
        [OperationContract]
        bool AddUser(User user);
        [OperationContract]
        bool RemoveUser(int id);
        [OperationContract]
        bool UpdateUser(User user);
        [OperationContract]
        User GetUserByID(int id);
        [OperationContract]
        User GetUserByEmail(string email);

        // Placement
        [OperationContract]
        IEnumerable<Placement> GetAllPlacements();
        [OperationContract]
        bool AddPlacement(Placement placement);
        [OperationContract]
        bool RemovePlacement(int id);
        [OperationContract]
        bool UpdatePlacement(Placement placement);
    }
}
